package com.gelsanalyzer.mvc.controller;

import java.beans.*;
import java.util.*;

import com.gelsanalyzer.mvc.model.*;
import com.gelsanalyzer.mvc.view.*;

public interface IController extends PropertyChangeListener {
    // For application wide properties or "Commands" we will keep the const 
    // library here...
    public static final String APP_GENERIC_COMMAND = "GenericEventOccured";
    public static final String APP_ADDED_COURSE = "AddedCourse";
    public static final String APP_SAVE_MODELS = "SaveModels";
    public static final String APP_DEPARTMENTS_PROPERTY = "Departments";
    public static final String APP_SELECTED_A_DEPARTMENT = "SelectedADepartment";
    public static final String APP_COURSES_SET = "CoursesSet";
    public static final String APP_SELECTED_A_COURSE = "SelectedACourse";
    public static final String APP_REMOVED_COURSE = "RemovedCourse";
    public static final String APP_OPTIMIZED_COURSES = "OptimizedCourse";
    public static final String APP_VIEW_DEPARTMENTS_REP = "ViewDepartmentReport";
    public static final String APP_VIEW_GOALS_REP = "ViewGoalsReport";

    public void setParent(IController controller);
    public IController getParent();
    
    public void addChild(IController controller);
    public void addChildren(List<IController> controllers);
    
    public List<IController> getChildren();
    //public void applicationEventFired(ActionEvent actionCommand);
    
    public IView getView();
    public void setView(IView view);
    
    public AbstractModel getModel();
    public void setModel(AbstractModel model);
}
